<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>离职员工信息</title>
    <link rel="stylesheet" href="/css/index.css">
</head>
<body>
<div id="app">
    <el-button type="primary" icon="el-icon-refresh" @click="refresh">刷新</el-button>
    <!--表格数据  : 相当于v-bind: -->
    <el-table
            :data="tableData"
            style="width: 100%">
        <!--表格的列   prop 组件   父作用域向子作用域传值-->
        <el-table-column
                prop="empId"
                label="编号"
                width="70">
        </el-table-column>

        <el-table-column
                prop="empName"
                label="员工姓名"
                width="120">
        </el-table-column>
        <el-table-column
                prop="sex"
                label="性别"
                width="50">
        </el-table-column>
        <el-table-column
                prop="address"
                label="地址"
                width="60">
        </el-table-column>
        <el-table-column
                prop="phone"
                label="电话"
                width="120">
        </el-table-column>
        <el-table-column
                prop="hireDate"
                label="入职日期"
                width="100">
        </el-table-column>
        <el-table-column
                prop="leaveDate"
                label="离职日期"
                width="100">
        </el-table-column>
        <el-table-column
                prop="days"
                label="在职天数"
                :formatter="getDays"
                width="100">
        </el-table-column>
        <el-table-column
                prop="roleName"
                label="职位"
                width="70">
        </el-table-column>
        <el-table-column
                prop="deptName"
                label="部门"
                width="70">
        </el-table-column>
        <el-table-column
                prop="storesName"
                label="店铺"
                width="70">
        </el-table-column>
        <el-table-column
                prop="status"
                label="状态"
                :formatter="getStatus"
                width="100">
        </el-table-column>
        <el-table-column label="操作">
            <template slot-scope="scope">
                <el-button
                        size="mini"
                        type="danger"
                        @click="handleDelete(scope.$index, scope.row)">删除</el-button>
                <el-button
                        size="mini"
                        @click="handleUpdate(scope.$index, scope.row)">重新入职</el-button>
            </template>
        </el-table-column>
    </el-table>
    <!--分页-->
    <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="currentPage"
            :page-sizes="[2,3,5,10,15,100]"
            :page-size="pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total">
    </el-pagination>
</div>
<!--引入vue-->
<script src="/js/vue.js"></script>
<!-- 引入组件element-ui库 -->
<script src="/js/index.js"></script>
<!--引入axios库-->
<script src="/js/axios.min.js"></script>

<script>
    var app =new Vue({
        el:"#app",
        /* data:{

         }*/
        data:function () {
            return{
                tableData: [],
                currentPage:1,
                pageSize: 5,
                total:100,
                /*searchForm:{username:'',empName:'',sex:'',address:'',status:''},*/
            }
        },
        created:function () { //初始化方法 类似于jquery  $({})
            this.loadData();
        },
        methods: {
            loadData() {
                //让_this等于当前vue对象
                //让_this等于当前vue对象
                var _this = this;

                //赋值 axios官网代码
                axios.post('/emp/listByStatus',{pageNum:this.currentPage,pageSize:this.pageSize})  //指定请求的url及参数  get
                    .then(function (response) {  //正确返回对象的处理
                        // handle success
                        console.log(response);
                        //JSON.stringify   把json转换为json字符串，方便查看
                        console.log(JSON.stringify(response));
                        //直接使用this 会指 axios对象  错误
                        // this.tableData
                        //判断返回值是否正确
                        if(response.data.code==200){
                            _this.tableData = response.data.data.list;
                            _this.total = response.data.data.total;
                        }

                    })
                    .catch(function (error) {//错误的处理
                        // handle error
                        console.log(error);
                    })
                    .then(function () {//总执行 最终处理      类似java  异常处理的finally
                        // always executed
                    });
            },
            refresh(){
                location.reload();
            },
            //每页数量发生变化执行方法
            handleSizeChange(val) {
                console.log(`每页 ${val} 条`);
                this.pageSize = val;
                //再次请求，加载数据
                this.loadData();
            },
            //获得在职天数
            getDays(row, column, cellValue, index){
                //alert(row.hireDate);
                //alert(row.leaveDate);
                var date1=Date.parse(row.hireDate);
                var date2=Date.parse(row.leaveDate);
                var days=Math.abs(date2-date1);
                return Math.floor(days/(1000*3600*24))+"天";
            },
            //获取部门状态  把状态数字，转换为字符
            getStatus(row, column, cellValue, index){
                return cellValue==1?"在职":"离职";
            },
            //当前页发生变化时执行方法
            handleCurrentChange(val) {
                console.log(`当前页: ${val}`);

                this.currentPage =val;
                //再次请求，加载数据
                this.loadData();
            },
            search(){
                this.loadData();
            },
            //处理删除
            handleDelete(index, row) {
                console.log(index, row);
                //确认框提示
                this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(() => {
                    //让_this等于当前vue对象
                    var _this = this;
                    //alert(111);
                    //赋值 axios官网代码  this.form =form:{deptName:'',description:'',status:1}
                    axios.delete("/emp/delete?empId=" + row.empId)  //指定请求的url及参数  get
                        .then(function (response) {  //正确返回对象的处理
                            // handle success
                            console.log(response);
                            //JSON.stringify   把json转换为json字符串，方便查看
                            console.log(JSON.stringify(response));
                            //直接使用this 会指 axios对象  错误
                            // this.tableData
                            //判断返回值是否正确
                            if (response.data.code == 200) {
                                //提示添加成功
                                _this.$message({
                                    message: '恭喜你，这是一条成功消息',
                                    type: 'success'
                                });
                                //重新加载数据
                                _this.loadData();
                            } else {
                                //错误提示信息
                                _this.$message.error('错了哦，这是一条错误消息');
                            }

                        })
                        .catch(function (error) {//错误的处理
                            // handle error
                            console.log(error);
                        })

                }).catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消删除'
                    });
                });
            },
            //重新入职
            handleUpdate(index, row) {
                //alert(1111111);
                alert(row)
                console.log(index, row);
                //确认框提示
                this.$confirm('确定该员工将重新入职, 是否继续?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(() => {
                    //让_this等于当前vue对象
                    var _this = this;
                    //alert(111);
                    //赋值 axios官网代码  this.form =form:{deptName:'',description:'',status:1}
                    axios.post("/emp/updateStatus",row)  //指定请求的url及参数  get
                        .then(function (response) {  //正确返回对象的处理
                            // handle success
                            console.log(response);
                            //JSON.stringify   把json转换为json字符串，方便查看
                            console.log(JSON.stringify(response));
                            //直接使用this 会指 axios对象  错误
                            // this.tableData
                            //判断返回值是否正确
                            if (response.data.code == 200) {
                                //提示添加成功
                                _this.$message({
                                    message: '恭喜你，这是一条成功消息',
                                    type: 'success'
                                });
                                //重新加载数据
                                _this.loadData();
                            } else {
                                //错误提示信息
                                _this.$message.error('错了哦，这是一条错误消息');
                            }

                        })
                        .catch(function (error) {//错误的处理
                            // handle error
                            console.log(error);
                        })

                }).catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消重新入职'
                    });
                });
            },
        }
    })
</script>
</body>
</html>